<?php

/**
 * Requst
 */
namespace app\controller;


use think\facade\Route;
use think\Request;

class Rely
{

    //Request类有很多方法，具体看手册
    protected $request;
    public function __construct(Request $request)
    {
        $this->request = $request;
    }

    public function index(Request $request){
//       return $_GET['name'];
       return $request->param('name');
   }

   public function get(){
//        return $this->request->param('name');
       //门面方式
//       return \think\facade\Request::param('name');

       //助手函数
//       return request()->param('name');

       //判断是否存在
       //param() 获取当前请求变量  具体看手册
//       dump(\think\facade\Request::has('id','get'));

       //默认情况下，并没有配置字符过滤器，在app\Request.php配置
       dump(\think\facade\Request::param());
       //获取所有请求变量，不过滤
       dump(\think\facade\Request::param(false));

       //使用局部 字符过滤器
       dump(\think\facade\Request::param('name','','strtoupper'));

       //设置了全局字符过滤器 但又不想某个局部使用，可以只用null参数
       dump(\think\facade\Request::param('name','',null));

       //如果获取不到值，支持请求的变量设置一个默认值
       dump(\think\facade\Request::param('username','lcy'));

       //路由
       dump(\think\facade\Request::route('id'));
       //用get无法获取到路由的
       dump(\think\facade\Request::get('id'));


       //使用only获取指定的变量   except() 排除指定变量
       dump(\think\facade\Request::only(['id']));


       //可以通过变量修饰符  可以将参数强制转换成指定的类型
       //  /s(字符串)  /d(整型)  /b(布尔)  /a(数组)  /f(浮点)
       dump(\think\facade\Request::param('id/b'));


       //使用助手函数  为简化操作，Request对象提供了助手函数
    dump(input('?get.id')); //判断get下的id是否存在
       dump(input('param.id')); //得到id的值
    }
   public function url(){
//        return $this->request->url(true);
       return \think\facade\Request::root(true);
   }

   //request获取当前控制器和操作方法的名称
    public function con(){
        return $this->request->controller().'|'.\think\facade\Request::action();
    }

    //获取 Request 请求类型  请求类型方法很多，具体看手册
    public function type(){
        dump($this->request->isGet());  //GET提交
        dump(\think\facade\Request::isPost());  //POST提交

        dump(\think\facade\Request::method()); //获取请求类型

        //支持球类类型伪装 可以在POST表单里面提交 _method变量，传入需要伪装的请求类型 可见手册
        //修改请求伪装变量类型的名称  可以在 app/Request.php 中修改

        //AJAX/PJAX伪装  使用?_ajax=1 和 ?_pjax=1 并使用isAjax() isPjax()  用method是无法判断是否为ajax pjax
        //也可在 app/Request修改 ajax pjax 的名称
    }

    //获取http头信息
    public function httP(){
        dump(\think\facade\Request::header());
        dump(\think\facade\Request::header('host'));
    }

    //伪静态
    public function sta(){
        //URL伪静态通常是为了满足更好的SEO效果，
        //ThinkPHP支持伪静态URL设置，可以通过设置url_html_suffix参数随意在URL的最后增加你想要的静态后缀，而不会影响当前操作的正常执行

        //获取当前的伪静态后缀
        dump(\think\facade\Request::ext());
    }

    //参数绑定
    //见手册好吧
    //参数缓存  具体夜间手册好吧
    public function bin($id=0){
        return $id;
    }


}